package cn.edu.fzu.homemaking.mapper;

import cn.edu.fzu.homemaking.domain.entity.UserDemand;
import cn.edu.fzu.homemaking.domain.enums.DemandStatusEnum;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Author jiebin
 * @Date 2023/4/1
 */
public interface DemandMapper {
    /**
     * 新增用户需求
     * @param userId-用户id
     * @param labelId-服务标签
     * @param demand-需求描述
     * @param time   约定时间
     * @param address 地址
     * @param person  人数
     * @param price   价格
     * @param name    顾客名
     * @param phone   联系电话
     * @param email   邮箱地址
     * @param status  需求状态
     * @return int
     */
    int insert(@Param("userId") Long userId, @Param("labelId") Long labelId, @Param("demand") String demand,
               @Param("time") String time, @Param("address") String address, @Param("person") Integer person,
               @Param("price") BigDecimal price, @Param("name") String name, @Param("phone") String phone,
               @Param("email") String email, @Param("status") DemandStatusEnum status);

    /**
     * 查询列表
     * @param userId  用户id
     * @param labelId  服务标签
     * @param startTime 查询开始时间
     * @param endTime   查询结束时间
     * @param address   地址
     * @param status    需求状态
     * @return 列表
     */
    List<UserDemand> list(@Param("userId") Long userId,@Param("labelId") Long labelId,@Param("startTime") String startTime,
                          @Param("endTime") String endTime,@Param("address") String address,
                          @Param("status") DemandStatusEnum status);

    /**
     * 查询需求单
     * @param id 需求单id
     * @return UserDemand
     */
    UserDemand selectById(@Param("id") Long id);

    /**
     * 更新需求状态
     * @param id  需求单ID
     * @param status  需求状态
     * @return int
     */
    void updateDemandStatus(@Param("id") Long id, @Param("status") DemandStatusEnum status);

    /**
     * 删除需求
     * @param id
     * @return
     */
    int delete(@Param("id") Long id);

}